<?php
	
	/**
	 * $type = N 普通订单，T 拼团订单,E 红包,P商品,C优惠券，
	 * $user_id 用户id
	 */
	function orderCode($type='N',$user_id)
	{
		return $type.date('YmdHi').$user_id.rand(1000,9999);
	}


	/**
 * 计算两点地理坐标之间的距离
 * @param  Decimal $lng1 起点经度
 * @param  Decimal $lat1  起点纬度
 * @param  Decimal $lng2 终点经度 
 * @param  Decimal $lat2  终点纬度
 * @param  Int     $unit       单位 1:米 2:公里
 * @param  Int     $decimal    精度 保留小数位数
 * @return Decimal
 */
function getDistance($lng1, $lat1, $lng2, $lat2, $unit=2, $decimal=2)
{

    $EARTH_RADIUS = 6371; // 地球半径系数
    $PI = 3.1415926;

    $radLat1 = $lat1 * $PI / 180.0;
    $radLat2 = $lat2 * $PI / 180.0;

    $radLng1 = $lng1 * $PI / 180.0;
    $radLng2 = $lng2 * $PI /180.0;

    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;

    $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
    $distance = $distance * $EARTH_RADIUS * 1000;

    if($unit==2){
        $distance = $distance / 1000;
    }

    return round($distance, $decimal);

}

/**
 * 生成红包数组
 */
function generateEnvolpeArr($restmoney)
{
        $envelop = [];
        // 1个 8.8的红包
        //array_push($envelop, 8.8);
        //$restmoney = $restmoney-8.8;
        // 150个 3毛到一块五的红包
        for($i=0;$i<170;$i++) {
            $m2 = mt_rand(30, 60);
            array_push($envelop, $m2);
            $restmoney = $restmoney-$m2;
        }

            
        // 剩余的钱生成若干个 0.2-0.8的红包 
        while($restmoney) {    
               
            $m3 = mt_rand(30,120);          
            array_push($envelop, $m3);
            $restmoney = $restmoney-$m3;    

            if($restmoney<90&& $restmoney>0) {
                array_push($envelop, $restmoney);
                $restmoney = 0;
            }
        }

        // 打乱红包数组
        shuffle($envelop);
        return $envelop;    
}


    function uploadFile($file,$path)
    {
        // 获取后缀名
        $ext      = $file->getClientOriginalExtension();    
        $saveName = time().rand().".".$ext;          
        $path     = $file->storeAs($path,$saveName);
        return $saveName;
    }
?>